<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>07_函数中的this</title>
</head>
<body>
<!--
1. this是什么?
  * 任何函数本质上都是通过某个对象来调用的,如果没有直接指定就是window
  * 所有函数内部都有一个变量this
  * 它的值是调用函数的当前对象
2. 如何确定this的值?
  * test(): window
  * p.test(): p
  * new test(): 新创建的对象
  * p.call(obj): obj
-->

<script type="text/javascript">
  function Person(color) {
    console.log(this) 
    this.color = color;
    this.getColor = function () {
      console.log(this)
      return this.color;
    };
    this.setColor = function (color) {
      console.log(this)
      this.color = color;
    };
  }

  // Person("red"); //this是谁? window

  var p = new Person("yello"); //this是谁? p

  // p.getColor(); //this是谁? p

  // var obj = {};
  // p.setColor.call(obj, "black"); //this是谁? obj

  // var test = p.setColor;
  // test(); //this是谁? window

  function fun1() {
    function fun2() {
      console.log(this);
    }

    fun2(); //this是谁? window
  }
  fun1();
</script>
</body>
</html>